Professional software applications generally offer a lot of special features. Graphics applications, for example, operate through objects and layers. Objects typically include vector primitives such as character fonts, points, lines and areas, as well as raster images. Layers include one or more objects, and are composited together in a variety of ways. User actions are applied through tools for curves, rectangles, ellipses, text, brush strokes, color fills, erasers, and much more. Tools may have many controls associated therewith, for setting and adjusting properties such as size, thickness, shape, color and opacity. Objects are generated and modified using palettes.
Users taking advantage of the many features of professional software applications quickly find themselves buried with window panels on the display screen. FIGS. 1A and 1B are two examples of graphic applications, illustrating an abundance of window panels for tools and palettes that are accessible. As can be seen, the window panels confine and clutter a user's working space, and the user spends a lot of time and effort in moving the window panels around.
There is therefore a need for a systematic way to manage multiple window panels for software applications so as to maintain their accessibility, while making it easy for a user to use them to perform tasks within the software applications.
Another drawback of professional software applications is that although a wide variety of controls are available, for each state that the application is in, only a subset of controls is relevant. As states dynamically change, a user often needs help in finding the appropriate subset of controls for a current state.
There is therefore also a need for a systematic way to manage controls, so that an appropriate subset of controls for a current state of the application is always readily available to the user.